﻿using System;

namespace Delegate
{
    class ClassA
    {
        public void DispMethod()
        {
            Console.WriteLine("Class A 已接到NotifyEveryOne 事件的通知！");
        }
    }
    // 第二个类
    class ClassB
    {
        public void DispMethod()
        {
            Console.WriteLine("Class B 已接到NotifyEveryOne 事件的通知！ ");
        }
    }
    class Delegate
    {
        // 定义委托
        public delegate void MeDelegate();
        // 定义事件
        public event MeDelegate NotifyEveryOne;

        public void Notify()
        {
            // 如果事件不为 null
            if (NotifyEveryOne != null)
            {
                Console.WriteLine("触发事件：");
                // 触发事件
                NotifyEveryOne();
            }
        }
    }
    class TestEvents
    {
        [STAThread]
        static void Main(string[] args)
        {
            // 委托的对象
            Delegate objDelegate = new Delegate();
            // ClassA 的对象
            ClassA objClassA = new ClassA();
            // ClassB 的对象
            ClassB objClassB = new ClassB();
            // 订阅该事件
            objDelegate.NotifyEveryOne +=
               new Delegate.MeDelegate(objClassA.DispMethod);
            objDelegate.NotifyEveryOne +=
               new Delegate.MeDelegate(objClassB.DispMethod);

            objDelegate.Notify();
        }
    }
}
